Methods and Apparatus for Specifying and Processing Descriptive Queries for Data Sources

ABSTRACT

Improved descriptive query techniques are provided. More particularly, techniques are provided for specifying and processing descriptive queries for data providers grouped into provider kinds with hierarchical containment relationships. The query may include arbitrary boolean combinations of arbitrary tests on the values of attributes of the data providers.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.10/865,058, filed on Jun. 10, 2004, the disclosure of which isincorporated by reference herein.

FIELD OF THE INVENTION

The present invention relates to descriptive query techniques and, moreparticularly, to techniques for specifying and processing descriptivequeries for data providers grouped into provider kinds with hierarchicalcontainment relationships.

BACKGROUND OF THE INVENTION

A number of systems are designed to obtain services from networkresources such as sensors, cameras, printers, and web services. Theseresources may be mobile, they may be ephemeral, and their quality ofservice may fluctuate. It has become widely accepted that such systemsshould not require users to name a specific resource from which theywish to obtain services, but rather, to describe what the resource isexpected to provide, so that the system can discover an appropriateresource. This approach, known as descriptive naming, allows the systemto select the best available resource, based on current conditions, andit makes an application robust against the failure of any one device.The approach accommodates the frequent addition of resources to, orremoval of resources from, the system, without modification of theapplication that uses such resources. The approach also allows anapplication written for one environment to be ported easily to anotherenvironment with a different set of resources.

A number of approaches have been taken to describe what a resource isexpected to provide. Many of the approaches feature queries based on aflat structure of categories, with each resource residing in preciselyone category. More powerful approaches support a hierarchy ofcategories, in which all resources in a category C can be used in anycontext in which a resource in a category above C in the hierarchy canbe used. A query for resources in a category above C can be satisfiednot only by resources of that category, but also by resources ofcategory C.

Many approaches allow queries to test attributes of resources, butrestrict the kinds of tests that can be performed, or the ways in whichtests of different attributes can be combined. An approach that onlyallows a conjunction of attribute-equality tests is inadequate fordetermining whether a resource with attributes giving the x and ycoordinates of a point corresponds to a point inside a given rectangle.If ordering comparisons as well as equality tests are allowed, it ispossible to query for placement within a given rectangle, but not forplacement inside any of a set of rectangles.

Ontology-based query systems support unstructured queries, in particularnatural-language queries, and apply common-sense reasoning to deducefacts that are not explicitly represented in the data sources beingqueried. Such systems may return an answer to some question differentfrom the question that was posed to it, if the system deduces that theanswer reflects the questioner's intent. Development of ontologies islabor-intensive, so few exist yet, and it is not clear that resourceswill exist in the long run to maintain them. Furthermore, forapplications that expect precise answers to precisely posed questions,returning an approximate answer, or an answer to a closely relatedquestion, is unacceptable.

SUMMARY OF THE INVENTION

Principles of the present invention provide improved descriptive querytechniques. More particularly, techniques are provided for specifyingand processing descriptive queries for data providers grouped intoprovider kinds with hierarchical containment relationships. The querymay include arbitrary boolean combinations of arbitrary tests on thevalues of attributes of the data providers.

In one aspect of the invention, a technique for processing descriptivequeries for data sources includes the following steps/operations. Givenis a set of named data providers, each distinguished by a type of datathe data provider provides and a set of attributes each with a uniquename and a particular type of value, and a grouping of the dataproviders into named provider kinds, such that data providers groupedinto the same provider kind provide the same type of data and have thesame set of attributes. A descriptive query is obtained. The descriptivequery includes the name of a provider kind and a specification of amapping from an assignment of one or more values for one or moreattributes of the data provider to one of a true value and a falsevalue. The descriptive query is resolved. The resolving step/operationincludes obtaining the names of data providers in the set of named dataproviders that belong to the provider kind specified in the descriptivequery and for which the mapping specified in the descriptive query mapsthe one or more values of the one or more attributes of the dataprovider to the true value.

The mapping specification may be a boolean-valued expression in whichthe names of the attributes of a data provider may appear, representingthe assigned values of the attributes. The boolean-valued expression maybe an XQuery expression evaluated in the context of an XML document thatspecifies the values of the attributes of the data provider.

Each data provider may have a set of uniquely named activationparameters, each of a specified type. Data providers grouped into thesame provider kind may have activation parameters with the same set ofnames, with identically named activation parameters of different dataproviders of the same provider kind having the same type. Thedescriptive query may include an assignment of values to activationparameters, with the value assigned to an activation parameter being ofthe type of that activation parameter. For a query that includesactivation parameters, the resolving step/operation includes obtainingthe names of data providers in the set of named data providers,activated with the assignment of activation parameter values in thedescriptive query, that belong to the provider kind specified in thedescriptive query and for which the mapping specified in the descriptivequery maps the values of the attributes of the data provider to the truevalue.

The descriptive query may further include the specification of aselection mechanism for selecting a subset of a set of data providers.For a query that includes a selection mechanism, the resolvingstep/operation includes obtaining the names of data providers in thesubset selected by the selection mechanism specified in the descriptivequery from the set of data providers in the set of named data providersthat belong to the provider kind specified in the descriptive query andfor which the mapping specified in the descriptive query maps the valuesof the attributes of the data provider to the true value.

The selection mechanism may select one arbitrary member of a set or allmembers of a set. Alternatively, the specification of a selectionmechanism may include the specification of a mapping from an assignmentof values for attributes of a data provider to a numeric value and thespecification of a mechanism for selecting a subset of a set of dataproviders given the numeric value to which the mapping maps theattribute values of each data provider in the set. The specification ofa mapping from an assignment of values for attributes of a data providerto a numeric value may be a number-valued expression in which the namesof the attributes of a data provider may appear, representing theassigned values of the attributes. The number-valued expression may bean XQuery expression evaluated in the context of an XML document thatspecifies the values of the attributes of the data provider.

The specification of a mechanism for selecting a subset of a set of dataproviders given the numeric value may include, for example, any of thefollowing:

selecting all data providers with numeric values above a giventhreshold;

selecting the N data providers with the highest numeric values for aspecified value of N;

selecting the first N data providers found regardless of their numericvalues for a specified value of N;

selecting all data providers found within a time interval T regardlessof their numeric values.

Provider kinds may be designated as subkinds of other provider kinds, afirst provider kind being eligible to be designated as a subkind of asecond provider kind if the type of the data provided by the firstprovider kind is a subtype of the type of the data provided by thesecond provider kind. Given such a designation, the resolvingstep/operation may include obtaining the names of data providers in theset of named data providers that belong to the provider kind specifiedin the descriptive query, or to any subkind of the provider kind, andfor which the mapping specified in the descriptive query maps the valuesof the attributes of the data provider to the true value.

Provider kinds associated with sets of activation parameters may bedesignated as subkinds of other such provider kinds, a first providerkind being eligible to be designated as a subkind of a second providerkind if: (i) the type of the data provided by the first provider kind isa subtype of the type of the data provided by the second provider kind;(ii) the set of activation-parameter names of the first provider kind isa subset of the set of activation parameter names of the second providerkind; and (iii) the type of each activation parameter of the firstprovider kind is a supertype of the type of the identically namedactivation parameter of the second kind. Given such a designation, theresolving step/operation may include obtaining the names of dataproviders in the set of named data providers that belong to the providerkind specified in the descriptive query, or to any subkind of theprovider kind, and for which the mapping specified in the descriptivequery maps the values of the attributes of the data provider to the truevalue.

A data provider may include the application of a stream transformer to astream of data provided by one or more other data providers. Thetechnique may further include providing a set of synthesis rules. Thesynthesis rules contain templates for the specification of providerkinds, in which one or more entities are replaced by one or moretemplate-parameter symbols; substitution of template-parameter valuesfor the template-parameter symbols in a template results in an instanceof the template, uniquely specifying a provider kind. A synthesis ruleasserts that an instance of a specified template may be synthesized byapplying a specified stream transformer to the stream of data providedby the instances of one or more specified templates, provided that theinstances are obtained by replacing all occurrences a giventemplate-parameter symbol in the rule with the same template-parametervalue. Given such a set of synthesis rules, the resolving step/operationmay include obtaining the names of data providers, either belonging tothe set of named data providers or synthesized in accordance with theset of synthesis rules, that belong to the provider kind specified inthe descriptive query and for which the mapping specified in thedescriptive query maps the values of the attributes of the data providerto the true value.

These and other objects, features and advantages of the presentinvention will become apparent from the following detailed descriptionof illustrative embodiments thereof, which is to be read in connectionwith the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating a query resolution system,according to an embodiment of the present invention;

FIG. 2 is a diagram illustrating a provider descriptor, according to anembodiment of the present invention;

FIG. 3 is a diagram illustrating a provider query, according to anembodiment of the present invention;

FIG. 4 is a diagram illustrating provider kinds and their relationshipto data providers, according to an embodiment of the present invention;

FIG. 5 is a diagram illustrating organization of provider kinds into ahierarchy of subkinds and superkinds, according to an embodiment of thepresent invention;

FIGS. 6A and 6B are diagrams illustrating selection mechanisms,according to embodiments of the present invention;

FIG. 7 is a flow diagram illustrating a process by which a queryresolution system may process a provider query containing aprovider-kind name, according to an embodiment of the present invention;

FIG. 8 is a diagram illustrating a data provider constructed by applyinga stream transformation to streams of values provided by other dataproviders, according to an embodiment of the present invention;

FIG. 9 is a diagram illustrating a provider query containing aprovider-kind definition, according to an embodiment of the presentinvention;

FIG. 10 is a diagram illustrating a provider-kind template, according toan embodiment of the present invention;

FIG. 11 is a diagram illustrating a synthesis rule, according to anembodiment of the present invention;

FIG. 12 is a flow diagram illustrating a process by which a queryresolution system may process a provider query containing aprovider-kind definition, according to an embodiment of the presentinvention; and

FIG. 13 is a block diagram illustrating a computer system suitable forimplementing a query resolution system, according to an embodiment ofthe present invention.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

It is to be understood that while the present invention will bedescribed below in the context of a distributed computing network, theinvention is not so limited. Rather, the invention is more generallyapplicable to any computing environment in which it would be desirableto provide improved techniques for specifying and processing descriptivequeries.

Advantageously, as will be illustratively described below in detail, oneaspect of the invention is based on a hierarchy of categories calledprovider kinds. Data providers belonging to the same provider kindprovide the same type of data, with the same underlying semantics, havethe same attributes, and are activated using the same types ofparameters. By way of example only, a provider kind may include: dataproviders that give the temperature in degrees Celsius at a specifiedlatitude and longitude; data providers that give the price in dollars ofa stock with a specified symbol; and/or data providers that give theprice in dollars of IBM stock. Of course, it is to be understood thatthe invention is not intended to be limited to any particular providerkinds.

The hierarchy is defined in such a way that all data providers ofprovider kind K can be used in any context in which a data provider witha provider kind above K in the hierarchy can be used. A provider queryfor a data provider of a kind above K in the hierarchy can be satisfiednot only by data providers of that provider kind, but also by dataproviders of kind K. This hierarchical relationship increases the numberof data providers, among those known to a query resolution system (alsoreferred to herein as a “query resolver”), that can match a given query.

Provider queries may also contain arbitrary boolean combinations ofarbitrary tests on attributes. In an illustrative embodiment, theattributes of a data provider are reported in an Extensible MarkupLanguage (XML) document, and attributes may be tested by evaluating aboolean-valued XQuery expression in the context of that document. Thiscapability increases the expressiveness of provider queries, allowingapplication writers to write provider queries that are neither toonarrow, eliminating some data providers that would have been acceptable,nor too broad, requiring the application to filter out some dataproviders returned by a query resolver.

The hierarchy of provider kinds can be viewed as a kind of primordialontology, with less ambitious and therefore more attainable goals. Weseek to classify only data providers rather than arbitrary knowledge,and we do so in a highly constrained manner. We thus avoid the pitfallsof an ontology-based approach.

A second aspect of the invention involves replacing the names ofprovider kinds in queries, with no analyzable characteristics other thantheir hierarchical relationship, with provider-kind definitionsspecifying semantic aspects of provider kinds. Templates forprovider-kind definitions, i.e., patterns in which certain definingcharacteristics of a provider kind are replaced by match variables,occur in synthesis rules of a query resolver.

A synthesis rule asserts that a data provider whose provider-kind isdefined by an instance of a particular template can be constructed byapplying a specified stream transformation to data providers whoseprovider kinds are corresponding instances of other particulartemplates. For example, one template in a synthesis rule couldcorrespond to a provider kind defined to report a result of some sort(the sort corresponding to match parameters) in inches, and anothertemplate in the same synthesis rule could correspond to a provider kindreporting the same sort of result in centimeters. The synthesis rulewould assert that a data provider whose provider kind is an instance ofthe second template can be constructed by taking the output of a dataprovider whose provider kind is an instance of the first template, andmultiplying by 2.54. For example, a data provider for measuring plantgrowth in centimeters can be constructed by taking the output of a dataprovider for measuring plant growth in inches and multiplying the resultby 2.54. A small set of stream transformations and synthesis rulesgreatly multiplies the number of data providers that can be discoveredby a query resolver.

FIG. 1 illustrates the context in which a query resolver (queryresolution system) operates. A query resolver 110 has access to a set ofdata providers 120. A provider query 130 is issued to the queryresolver, which responds with a subset 140 of the data providers.

Every data provider has a provider descriptor, such as that illustratedin FIG. 2. A provider descriptor 200 has a provider-kind name 210 and aset 220 of attributes, each with a distinct name and a value of sometype. A provider query is, essentially, a test that a given providerdescriptor either passes or fails. In an illustrative embodiment, aprovider query is represented as an XML document 250.

In an illustrative embodiment, the provider query 130 has the formillustrated in FIG. 3. A provider query 300 includes the name 310 of aprovider kind, a boolean-valued XQuery expression 320, an assignment 330of activation parameters to parameter values, and a selection mechanism340. The following paragraphs discuss activation parameters, providerkinds, and selection mechanisms in greater detail.

Activation parameters provide the information needed to activate a dataprovider. Activation parameters might include, for example, the uniqueidentifier of a particular real-world entity about which data is to becollected, or an authentication token.

Every data provider has a provider kind. All providers of a particularprovider kind provide values of the same type, have activationparameters with the same names and types, and have provider descriptorsthat name the particular provider kind, and have attributes with thesame names and types of values.

FIG. 4 illustrates data providers 410 and 420 having provider kind 430and data providers 440 and 450 having provider kind 460. Provider kindscan be organized into hierarchies of superkinds and subkinds, such thata provider of some kind k can serve as a provider of any superkind of k(or, equivalently, that a query for a provider of kind k can besatisfied by a provider of any subkind of k). A provider kind p can bethe direct parent of a provider kind c only if each of the followingconditions holds:

The type of value provided by c is a subtype of the type of valueprovided by p.For each activation parameter of kind c, kind p has an identically namedactivation parameter, and the type of each parameter of c is a supertypeof the type of the corresponding parameter of p.The set of attribute names of c is a superset of the set of attributenames of p, and attributes with the same name have the same type.

The superkinds of a provider kind k include k and the direct parents ofall superkinds of k; if x is a superkind of y, then y is a subkind of x.

FIG. 5 illustrates provider kinds 510, 520, 530, and 540 organized intoa hierarchy such that provider kind 510 is the direct parent of providerkinds 520 and 530, which, in turn, are direct parents of provider kind540. The subkinds of provider kind 510 are provider kinds 510, 520, 530,and 540. The subkinds of provider kind 520 are provider kind 520 andprovider kind 540. The subkinds of provider kind 530 are provider kind530 and provider kind 540. The only subkind of provider kind 540 isprovider kind 540, itself. If a provider kind s is a subkind of aprovider kind k, a descriptor for a provider of kind s includes at leastthe attributes found in a provider of kind k.

A selection mechanism selects a subset of a set of provider descriptorsfor data providers eligible to match a query. FIG. 6 respectivelyillustrate two embodiments of a selection mechanism.

In one embodiment (FIG. 6A), the selection mechanism includes anindication 610 either that all eligible data providers are to beselected or that one arbitrarily chosen data provider is to be selected.

In another embodiment (FIG. 6B), the selection mechanism 620 includes aninteger-valued XQuery expression 630 and a score-based criterion 640 forselecting from eligible data providers based on the value of the XQueryexpression 630 when applied to the descriptor of each eligible dataprovider. Possible score-based criteria include, but are not limited to,selecting all data providers with scores above a given threshold,selecting the n data providers with the highest scores for somespecified value of n, selecting the first n data providers foundregardless of their scores for some specified value of n, and selectingall data providers found within a given time interval regardless oftheir scores.

Given a provider query, a query resolver (110 in FIG. 1) returns a setof matching provider descriptors obtained by following the stepsillustrated in the flowchart of FIG. 7. An initialization step 705 setsS to the set of data providers accessible to the query resolver, K tothe provider kind specified in the provider query, AP to theactivation-parameter values specified in the provider query, PRED to thepredicate specified in the provider query, SM to the selection mechanismspecified in the provider query, and ELIGIBLE to the empty set.

The query resolver then enters a loop beginning with step 710. Step 710tests whether S is empty. If so, the query resolver exits the loop andcontinues with step 750; if not, the query resolver executes step 715.Step 715 selects an arbitrary data provider DP from set S and removes itfrom S. Then, step 720 tests whether the provider kind of DP is asubkind of K (possibly K itself). If so, execution continues with step725; if not, execution continues with step 710 for a new iteration ofthe loop.

Step 725 attempts to activate DP using the activation-parameter valuesAP, obtaining a provider descriptor DESC, and step 730 tests whetherthis attempt was successful (in which case DESC has a nonnull value). Ifso, execution continues with step 735; if not, execution continues withstep 710 for a new iteration of the loop. Step 735 applies predicatePRED to DESC, obtaining a boolean value B. Then, step 740 tests whetherB is true. If so, execution continues with step 745; if not, executioncontinues with step 710 for a new iteration of the loop. Step 745 addsDESC to the set ELIGIBLE, and execution continues with step 710 for anew iteration of the loop.

Following execution of the loop, step 750 applies selection mechanism SMto ELIGIBLE, obtaining a set SELECTED. Then, step 755 returns the setSELECTED. It will be clear to one skilled in the art that there arenumerous ways in which this process can be varied to improve itsperformance. These ways include, but are not limited to, using adatabase or hash table to retrieve all accessible data providers of theappropriate provider kind, rather than iterating over all data providersand testing the provider kind of each; and creating a partially filledin data-provider descriptor without actually activating thecorresponding data provider if all the attribute values referred to bythe boolean-valued XQuery expression can be determined withoutactivating the data provider.

Another embodiment, based on pattern matching, increases the number ofmatches returned by a query processor by enlarging the number of dataproviders accessible to the query processor. In the pattern-matchingembodiment, a new data provider can be constructed that provides valuesobtained by applying a stream transformation to the stream of valuesprovided by one or more other data providers.

FIG. 8 depicts a data provider 810 that applies a stream transformation820 to other data providers 830. An example of a stream transformationis one that multiplies each value in an incoming data stream ofdistances in inches by 2.54, obtaining a data stream of distances incentimeters. If this stream transformation is applied to the output of adata provider that provides cumulative rainfall amounts in inches, theconstructed data provider is one that provides cumulative rainfallamounts in centimeters. If the same stream transformation is applied toa data provider that provides diameters of blood vessels in inches, theconstructed provider is one that provides diameters of blood vessels incentimeters.

Stream transformers can be classified as value-based or stream-based. Avalue-based stream transformer generates one output value for each inputvalue (or each set of contemporaneous input values, one from each ofseveral input streams). The output value is determined by the inputvalue (or values). A stream-based stream transformer generates outputvalues based on the history of input values up to a certain point andthe passage of time. The stream-based stream transformer might notgenerate an output value for each input value, and might generate outputvalues that do not correspond to any input value.

Value-based transformations include, but are not limited to, theconversion of a value from one representation to another; the extractionof a subset of the components of a composite value; the use of an inputvalue as an index to locate some corresponding value using a mechanismsuch as a database, a special-purpose file, or a web service; and theuse of a formula to derive an output value from an input value or from aset of contemporaneous input values obtained from multiple streams.

Stream-based transformations include, but are not limited to, thegeneration of values at regularly spaced times based on the most recentinput value at each of those times; the computation of an output valueas a sum, average, maximum, or minimum of input values received so far,using either all input values received so far, the most recent n values,or all values received in the last t units of time; the matching ofpatterns of input-value sequences, and the generation of an output valueeach time such a pattern is matched; the generation as an output valueof each input value satisfying a certain criterion; and the generationas an output value of any value found in any input stream.

The provider-kind name 310 of the provider descriptor depicted in FIG. 3is replaced in the pattern-matching embodiment by a provider-kinddefinition with components defining the semantics of the provided data.Illustrative examples of such components are dimensions of the provideddata, such as mass, length, time, location, or personal identity; unitsof the provided data, such as kilograms, inches, milliseconds, anddegrees; encoding of the provided data, such as IEEE single-precisionfloating-point representation, ASCII decimal representation, and binary64-bit integer representation, and 9-digit Social Security number; andsemantic significance, such as that the amount of time provided by adata provider of the defined provider kind is the age of the personidentified by the activation parameter named “SSN”, or that the streamof velocity values provided by a data provider of the defined providerkind is the velocity of an automobile with the vehicle identificationnumber given by the activation parameter named “VIN”.

Dimension, units, encoding, and semantic significance can all berepresented by character strings with well-understood meanings. Theinvention supports the incorporation in provider-kind definitions ofother kinds of components, also representable by character strings,defining the semantics of the provided data. The invention also supportsthe use of representations other than character strings.

FIG. 9 illustrates a provider query 900 for a source of cumulativerainfall in inches at latitude 41.0856° N and longitude 73.8172° W thatincludes a provider-kind definition 910 for a provider kind whose dataproviders provide the cumulative rainfall in inches measured at aspecified latitude and longitude. The provider-kind definition includesa set 920 of components defining the semantics of the provided data.Besides the provider-kind definition, the provider query includes aboolean-valued XQuery expression 930, an assignment 940 of values toactivation parameters “lat” and “long,” and a selection mechanism 950.

A provider-kind template is a provider-kind definition in which certaincharacter strings, and the set of activation parameters, have beenreplaced by symbols called template parameters. Replacing eachoccurrence of a template parameter with a value, such that alloccurrences of the same template parameter are replaced by the samevalue, results in a provider-kind definition which is called an instanceof the template. If an instance can be obtained from a template withtemplate parameters P₁, . . . ,p_(n) by replacing all occurrences ofp_(i) with value v_(i), 1≦i≦n, we say that the instance matches thetemplate with substitution [p₁→v₁, . . . , p_(n)→v_(n)].

FIG. 10 shows an illustrative provider-kind template 1000 with templateparameters “$DIM,” “$ENCODING,” and “$SEM.” Provider-kind definition 910of FIG. 9 matches this template with substitution [$DIM→“length”,$ENCODING→“8-bit unsigned binary integer”, $SEM→“cumulative rainfall forpast 24 hours at latitude ‘lat’ and longitude ‘long’”].

The query resolver has available to it a set of synthesis rules, eachincluding an output provider-kind template, the name of a streamtransformation, and one input provider-kind template for each dataprovider used as an input to the stream transformation. Every templateparameter that occurs in an input provider-kind template must also occurin the output provider-kind template, and a given template parameter mayoccur in multiple input provider-kind templates.

Consider a synthesis rule SR with output provider-kind templateOPK_TEMPLATE, stream transformation ST, and input provider-kindtemplates IPK_TEMPLATE₁, . . . IPK_TEMPLATE_(n). Synthesis rule SRasserts the following. Suppose each occurrence of a template parameterin the parameter-kind templates OPK_TEMPLATE and IPK_TEMPLATE₁, . . .IPK_TEMPLATE_(n) of rule SR is replaced with a value, such that alloccurrences of the same template parameter are replaced in all templatesof the rule by the same value, obtaining provider-kind definitionsOPK_INSTANCE and IPK_INSTANCE₁, . . . IPK_INSTANCE_(n), respectively.Then, the application of stream transformation ST to data providerswhose provider kinds are defined by IPK_INSTANCE₁, . . .IPK_INSTANCE_(n) is a data provider whose provider kind is defined byOPK_INSTANCE.

FIG. 11 illustrates a synthesis rule 1100 including an inputprovider-kind template 1110, a stream-transformation name 1120, and anoutput provider-kind template 1130. The rule asserts that a dataprovider measuring some quantity in centimeters can be constructed byfeeding the output of a data provider measuring that same quantity ininches to the stream transformation “MULTIPLY BY 2.54.”

Given a provider query, a query resolver returns a set of matchingprovider descriptors obtained by following the steps illustrated in theflowchart of FIG. 12. An initialization step 1205 sets SRSET to the setof synthesis rules known to the query resolver, sets PKDEF to theprovider-kind definition in the provider query, sets AP to the set ofactivation-parameter values in the query, sets PRED to theboolean-valued XQuery expression in the query, and sets ELIGIBLE to theempty set. The query resolver then enters an outer loop including steps1210, 1215, 1220, and 1225, an inner loop, and steps 1250, 1255, 1260,1265, and 1270. The inner loop includes steps 1230, 1235, 1240, and1245.

An iteration of the outer loop starts with a step 1210 that testswhether SRSET is empty and exits the outer loop if it is empty. Step1215 selects an arbitrary synthesis rule SR from SRSET, removes thesynthesis rule from SRSET, sets OT to the output template of thesynthesis rule, sets T to the stream transformation of the synthesisrule, sets the elements of an array IT to the n input templates of thesynthesis rule, and determines whether the provider-kind definitionPKDEF matches the template OT with some substitution S. If not (i.e., ifS is null), step 1220 skips to the end of the iteration of the outerloop. Step 1225 initializes the loop counter I for the inner loop to 1.The query resolver then proceeds to the inner loop.

An iteration of the inner loop begins with a step 1230 that testswhether the loop counter I exceeds the number of input templates n, andexits the inner loop if so. Step 1235 obtains a provider-kind definitionD by applying substitution S to input provider-kind template IT[I];creates a new provider query PQ containing provider-kind definition D,activation-parameter values AP, boolean-valued XQuery expression PRED,and selection mechanism “ANY ONE”; recursively invokes the steps of FIG.12 to attempt to find a data provider satisfying PQ, and assigns theresult to IDP[I]. Step 1240 tests whether the attempt to find a dataprovider satisfying PQ was successful (i.e., whether IDP[I] is nonnull);if not, the query resolver exits from the inner loop and skips to theend of the current iteration of the outer loop. Step 1245 completes theiteration of the inner loop by incrementing the loop counter I inpreparation for the next iteration of the inner loop.

Following completion of the inner loop, step 1250 constructs a new dataprovider DP by applying the stream transformation T to data providersIDP[1], . . . ,IDP[n] and attempts to activate DP withactivation-parameter values AP, obtaining a provider descriptor DESC.Step 1255 tests whether the activation attempt was successful (i.e.,whether DESC is nonnull); if not, the query resolver skips to the end ofthe iteration of the outer loop. Step 1260 evaluates the boolean-valuedXQuery expression PRED in the context of the provider descriptor DESCand step 1265 tests whether the result is true, skipping to the end ofthe iteration of the outer loop if it is not. Step 1270 adds DESC to theset ELIGIBLE, ending the iteration of the outer loop. Followingexecution of the outer loop, step 1275 applies selection mechanism SM toELIGIBLE, obtaining a set SELECTED. Then step 1280 returns the setSELECTED.

Referring lastly to FIG. 13, a computer system suitable for implementinga query resolution system, according to an exemplary embodiment of thepresent invention, is illustrated. For example, the illustrativearchitecture of FIG. 13 may be used in implementing any and all of thecomponents and/or steps described in the context of FIGS. 1 through 12.

As shown, the computer system 1300 may be implemented in accordance witha processor 1310, a memory 1320, I/O devices 1330, and a networkinterface 1340, coupled via a computer bus 1350 or alternate connectionarrangement.

It is to be appreciated that the term “processor” as used herein isintended to include any processing device, such as, for example, onethat includes a CPU (central processing unit) and/or other processingcircuitry. It is also to be understood that the term “processor” mayrefer to more than one processing device and that various elementsassociated with a processing device may be shared by other processingdevices.

The term “memory” as used herein is intended to include memoryassociated with a processor or CPU, such as, for example, RAM, ROM, afixed memory device (e.g., hard drive), a removable memory device (e.g.,diskette), flash memory, etc.

In addition, the phrase “input/output devices” or “I/O devices” as usedherein is intended to include, for example, one or more input devices(e.g., keyboard, mouse, etc.) for entering data to the processing unit,and/or one or more output devices (e.g., speaker, display, etc.) forpresenting results associated with the processing unit.

Still further, the phrase “network interface” as used herein is intendedto include, for example, one or more transceivers to permit the computersystem to communicate with another computer system via an appropriatecommunications protocol.

Accordingly, software components including instructions or code forperforming the methodologies described herein may be stored in one ormore of the associated memory devices (e.g., ROM, fixed or removablememory) and, when ready to be utilized, loaded in part or in whole(e.g., into RAM) and executed by a CPU.

It is to be further appreciated that the present invention also includestechniques for providing descriptive query services. By way of example,a service provider agrees (e.g., via a service level agreement or someinformal agreement or arrangement) with a service customer or client toprovide descriptive query services. That is, by way of one example only,the service provider may host the customer's web site and associatedapplications. Then, in accordance with terms of the contract between theservice provider and the service customer, the service provider providesdescriptive query services that may include one or more of themethodologies of the invention described herein.

Although illustrative embodiments of the present invention have beendescribed herein with reference to the accompanying drawings, it is tobe understood that the invention is not limited to those preciseembodiments, and that various other changes and modifications may bemade by one skilled in the art without departing from the scope orspirit of the invention.

1. A method of processing descriptive queries for data sources,comprising the steps of: given a set of named data providers, eachdistinguished by a type of data the data provider provides and a set ofattributes each with a unique name and a particular type of value, and agrouping of the data providers into named provider kinds, such that dataproviders grouped into the same provider kind provide the same type ofdata and have the same set of attributes; obtaining a descriptive query,the descriptive query comprising the name of a provider kind and aspecification of a mapping from an assignment of one or more values forone or more attributes of the data provider to one of a true value and afalse value; and resolving the descriptive query, the resolving stepcomprising obtaining the names of data providers in the set of nameddata providers that belong to the provider kind specified in thedescriptive query and for which the mapping specified in the descriptivequery maps the one or more values of the one or more attributes of thedata provider to the true value.
 2. The method of claim 1, wherein themapping specification comprises a boolean-valued expression in which thenames of the attributes of a data provider appear, representing theassigned values of the attributes.
 3. The method of claim 2, wherein theboolean-valued expression is an XQuery expression evaluated in thecontext of an XML document that specifies the values of the attributesof the data provider.
 4. The method of claim 1, wherein each dataprovider has a set of uniquely named activation parameters, each of aspecified type.
 5. The method of claim 4, wherein data providers groupedinto the same provider kind have activation parameters with the same setof names, with identically named activation parameters of different dataproviders of the same provider kind having the same type, and whereinthe descriptive query includes an assignment of values to activationparameters, with the value assigned to an activation parameter being ofthe type of that activation parameter, and wherein the resolving stepfurther comprises obtaining the names of data providers in the set ofnamed data providers, activated with the assignment of activationparameter values in the descriptive query, that belong to the providerkind specified in the descriptive query and for which the mappingspecified in the descriptive query maps the values of the attributes ofthe data provider to the true value.
 6. The method of claim 1, whereinthe descriptive query further comprises the specification of a selectionmechanism for selecting a subset of a set of data providers.
 7. Themethod of claim 6, wherein the resolving step further comprisesobtaining the names of data providers in the subset selected by theselection mechanism specified in the descriptive query from the set ofdata providers in the set of named data providers that belong to theprovider kind specified in the descriptive query and for which themapping specified in the descriptive query maps the values of theattributes of the data provider to the true value.
 8. The method ofclaim 6, wherein the selection mechanism selects one arbitrary member ofthe set of data providers or all members of the set of data providers.9. The method of claim 6, wherein the specification of a selectionmechanism comprises the specification of a mapping from an assignment ofvalues for attributes of a data provider to a numeric value and thespecification of a mechanism for selecting a subset of a set of dataproviders given the numeric value to which the mapping maps theattribute values of each data provider in the set.
 10. The method ofclaim 9, wherein the specification of a mapping from an assignment ofvalues for attributes of a data provider to a numeric value comprises anumber-valued expression in which the names of the attributes of a dataprovider may appear, representing the assigned values of the attributes.11. The method of claim 10, wherein the number-valued expression is anXQuery expression evaluated in the context of an XML document thatspecifies the values of the attributes of the data provider.
 12. Themethod of claim 9, wherein the specification of a mechanism forselecting a subset of a set of data providers given the numeric valuecomprises selecting all data providers with numeric values above a giventhreshold.
 13. The method of claim 9, wherein the specification of amechanism for selecting a subset of a set of data providers given thenumeric value comprises selecting the N data providers with the highestnumeric values for a specified value of N.
 14. The method of claim 9,wherein the specification of a mechanism for selecting a subset of a setof data providers given the numeric value comprises selecting the firstN data providers found regardless of their numeric values for aspecified value of N.
 15. The method of claim 9, wherein thespecification of a mechanism for selecting a subset of a set of dataproviders given the numeric value comprises selecting all data providersfound within a time interval T regardless of their numeric values. 16.The method of claim 1, wherein a first provider kind is designated as asubkind of a second provider kind if the type of the data provided bythe first provider kind is a subtype of the type of the data provided bythe second provider kind, and wherein the resolving step alternativelyobtains the names of data providers in the set of named data providersthat belong to the provider kind specified in the descriptive query, orto any subkind of the provider kind, and for which the mapping specifiedin the descriptive query maps the values of the attributes of the dataprovider to the true value.
 17. The method of claim 4, wherein a firstprovider kind is designated as a subkind of a second provider kind if:the type of the data provided by the first provider kind is a subtype ofthe type of the data provided by the second provider kind; the set ofactivation-parameter names of the first provider kind is a subset of theset of activation parameter names of the second provider kind; and thetype of each activation parameter of the first provider kind is asupertype of the type of the identically named activation parameter ofthe second kind; wherein the resolving step alternatively obtains thenames of data providers in the set of named data providers that belongto the provider kind specified in the descriptive query, or to anysubkind of the provider kind, and for which the mapping specified in thedescriptive query maps the values of the attributes of the data providerto the true value.
 18. The method of claim 1, wherein at least one dataprovider comprises the application of a stream transformer to a streamof data provided by one or more other data providers.
 19. The method ofclaim 18, further comprising: providing a set of templates for thespecification of provider kinds, in which one or more entities arereplaced by one or more template-parameter symbols, wherein substitutionof template-parameter values for the template-parameter symbols in atemplate results in an instance of the template, uniquely specifying aprovider kind; providing a set of synthesis rules, each allowing aninstance of a specified template to be synthesized by applying aspecified stream transformer to the stream of data provided by theinstances of one or more specified templates, provided that theinstances are obtained by replacing all occurrences a giventemplate-parameter symbol in the rule with the same template-parametervalue; wherein the resolving step alternatively obtains the names ofdata providers, either belonging to the set of named data providers orsynthesized in accordance with the set of synthesis rules, that belongto the provider kind specified in the descriptive query and for whichthe mapping specified in the descriptive query maps the values of theattributes of the data provider to the true value.
 20. Apparatus forprocessing descriptive queries for data sources, comprising: a memory;and at least one processor coupled to the memory and operative to, givena set of named data providers, each distinguished by a type of data thedata provider provides and a set of attributes each with a unique nameand a particular type of value, and a grouping of the data providersinto named provider kinds, such that data providers grouped into thesame provider kind provide the same type of data and have the same setof attributes: (i) obtain a descriptive query, the descriptive querycomprising the name of a provider kind and a specification of a mappingfrom an assignment of one or more values for one or more attributes ofthe data provider to one of a true value and a false value; and (ii)resolve the descriptive query, the resolving step comprising obtainingthe names of data providers in the set of named data providers thatbelong to the provider kind specified in the descriptive query and forwhich the mapping specified in the descriptive query maps the one ormore values of the one or more attributes of the data provider to thetrue value.
 21. An article of manufacture for processing descriptivequeries for data sources, comprising a machine readable mediumcontaining one or more programs which when executed implement the stepsof: given a set of named data providers, each distinguished by a type ofdata the data provider provides and a set of attributes each with aunique name and a particular type of value, and a grouping of the dataproviders into named provider kinds, such that data providers groupedinto the same provider kind provide the same type of data and have thesame set of attributes; obtaining a descriptive query, the descriptivequery comprising the name of a provider kind and a specification of amapping from an assignment of one or more values for one or moreattributes of the data provider to one of a true value and a falsevalue; and resolving the descriptive query, the resolving stepcomprising obtaining the names of data providers in the set of nameddata providers that belong to the provider kind specified in thedescriptive query and for which the mapping specified in the descriptivequery maps the one or more values of the one or more attributes of thedata provider to the true value.
 22. A method of providing a service forprocessing descriptive queries for data sources, comprising the stepsof: a service provider, given a set of named data providers, eachdistinguished by a type of data the data provider provides and a set ofattributes each with a unique name and a particular type of value, and agrouping of the data providers into named provider kinds, such that dataproviders grouped into the same provider kind provide the same type ofdata and have the same set of attributes: obtaining a descriptive query,the descriptive query comprising the name of a provider kind and aspecification of a mapping from an assignment of one or more values forone or more attributes of the data provider to one of a true value and afalse value; and resolving the descriptive query, the resolving stepcomprising obtaining the names of data providers in the set of nameddata providers that belong to the provider kind specified in thedescriptive query and for which the mapping specified in the descriptivequery maps the one or more values of the one or more attributes of thedata provider to the true value.